00005 DIM F(16,9),R1(16),R2(16),D9(16),P(17,10),F2(16)
    00007 DIM P1(17,5),S(16),I1(8),T1(9),L1(5),N9(5),C(5)
00009 DIM T2(9),D(9),A(5,5),E(2),B(6,6),Z(6)
    00040 FOR J=1 TO 9
00050 FOR K=1 TO 16
    00060 READ F(K,J)
 00070 NEXT K
 00080 NEXT J
 00135 PRINT
  00180 N=3
    00181 T=8
    00182 Z1=100
 00185 PRINT
  00230 FOR I = 1 TO 8
   00231 I1(I)=I
00232 NEXT I
 00235 PRINT
  00285 PRINT
  00300 FOR  I = 1 TO 16
 00301 R1(I)=20
    00302 NEXT I
 00370 FOR J=1 TO 16
    00380 READ S(J)
   00390 NEXT J
 00400 FOR J=1 TO T
00410 READ Z1
00420 FOR K=1 TO 17
    00430 READ P(K,J)
 00440 NEXT K
 00450 IF Z1<>I1(J) THEN 410
 00460 NEXT J
 00500 FOR J=1 TO 16
    00510 LET R1(J)=((1.-R1(J)*.01)^2.)/(.02*R1(J))
 00520 LET R1(J)=R1(J)-S(J)
  00530 LET R1(J)=R1(J)+1.-((R1(J)*R1(J))+(2.*R1(J)))^.5
    00540 LET D9(J)=(R1(J)*R1(J)*2.)/(1.-R1(J)*R1(J))
    00550 NEXT J
 00590 FOR J=1 TO 9
00600 LET T1(J)=0
 00610 FOR K=1 TO 16
    00620 LET T1(J)=T1(J)+R1(K)*F(K,J)
    00630 NEXT K
 00640 NEXT J
 00680 FOR J=1 TO 5
00690 PRINT
  00700 NEXT J
 00720 PRINT
  00730 PRINT " PIGMENTS"," AMOUNT"," DEA"," DEF"," COST"
   00740 PRINT
  00780 FOR J= 1 TO N
    00790 LET L1(J)=T-N+J
  00800 NEXT J
 00810 LET N9(1)=0
 00820 LET N9(1)=N9(1)+1
00830 LET N9(2)=N9(1)+1
00840 LET N9(3)=N9(2)+1
00850 LET N9(4)=N9(3)+1
00860 LET N9(5)=N9(4)+1
00900 FOR J=1 TO N
00910 LET K=N9(J)
 00920 FOR L=1 TO 17
    00930 LET P1(L,J)=P(L,K)
    00940 NEXT L
 00950 LET C(J)=1.
 00960 NEXT J
 00970 LET I2=0
    00980 LET I3=0
    01020 FOR L=1 TO 16
    01030 LET F2(L)=0
 01040 FOR J=1 TO N
01050 LET F2(L)=F2(L)+P1(L,J)*C(J)
    01060 NEXT J
 01070 IF F2(L)<0 THEN 1560
  01110 LET R2(L)=F2(L)+1.-((F2(L)*F2(L))+(2.*F2(L)))^.5
    01120 NEXT L
 01130 IF I2<20 THEN 1150
    01140 GOTO 1560
   01150 LET I4=0
    01160 FOR J=1 TO 9
01170 LET T2(J)=0
 01180 FOR K=1 TO 16
    01190 LET T2(J)=T2(J)+R2(K)*F(K,J)
    01200 NEXT K
 01210 LET D(J)=T1(J)-T2(J)
  01220 NEXT J
 01260 FOR J=1 TO N
01270 IF ABS(D(J))<.01 THEN 1290
 01280 LET I4=1
    01290 NEXT J
 01300 IF I4=0 THEN 1690
01310 IF I3=1 THEN 1440
01350 FOR J=1 TO N
01360 FOR L=1 TO N
01370 LET A(J,L)=0
01380 FOR K=1 TO 16
    01390 LET A(J,L)=A(J,L)+(F(K,J)*D9(K)*P1(K,L))
  01400 NEXT K
 01410 NEXT L
 01420 NEXT J
 01430 LET I3=1
    01440 GOSUB 4000
  01450 LET I2=I2+1
 01490 FOR J=1 TO N
01500 LET C(J)=C(J)-D(J)
    01510 NEXT J
 01520 GOTO 1020
   01560 FOR J=1 TO N
01570 IF N9(J)<>L1(J) THEN 1630
  01580 LET K=J-1
   01590 IF K<>0 THEN 1610
01600 STOP
   01610 LET N9(K)=N9(K)+1
01620 IFJ=1 THEN 1600
  01621 IF J=2 THEN 830
  01622 IF J=3 THEN 840
  01623 IF J=4 THEN 850
  01624 IF J=5 THEN 860
  01630 NEXT J
 01640 LET N9(N)=N9(N)+1
01650 GOTO 900
    01690 LET G=0
01700 FOR J=1 TO N
01710 IF C(J)<0 THEN 1560
   01720 LET G=G+P1(17,J)*C(J)
 01730 NEXT J
 01790 LET V1=T1(4)
01800 LET V2=T1(6)
01810 LET V3=T1(5)
01820 LET V4=T2(4)
01830 LET V5=T2(6)
01840 LET V6=T2(5)
01850 GOSUB 5000
  01860 LET E(1)=D8
 01870 LET V1=T1(7)
01880 LET V2=T1(9)
01890 LET V3=T1(8)
01900 LET V4=T2(7)
01910 LET V5=T2(9)
01920 LET V6=T2(8)
01930 GOSUB 5000
  01940 LET E(2)=D8
 01950 PRINT
  01990 LET C9=100
  01995 FOR J=1 TO N
02000 LET C9=C9-C(J)
   02010 LET K=N9(J)
 02015 LET K=I1(K)
 02020 LET C(J)=INT(C(J)*1000+.5)/1000
 02030 IF K=1 THEN 2120
 02040 IF K=2 THEN 2140
 02050 IF K=3 THEN 2160
 02060 IF K=4 THEN 2180
 02070 IF K=5 THEN 2200
 02080 IF K=6 THEN 2220
 02090 IF K=7 THEN 2240
 02100 IF K=8 THEN 2260
 02120 PRINT"LAMP BLACK",C(J)
02130 GOTO 2280
   02140 PRINT"CHRM YELLOW",C(J)
    02150 GOTO 2280
   02160 PRINT"PRIM YELLOW",C(J)
    02170 GOTO 2280
   02180 PRINT"OXID YELLOW",C(J)
    02190 GOTO 2280
   02200 PRINT"OXID RED",C(J)
  02210 GOTO 2280
   02220 PRINT"PHTH GREEN",C(J)
02230 GOTO 2280
   02240 PRINT"MOLY ORANGE",C(J)
    02250 GOTO 2280
   02260 PRINT"PHTH BLUE",C(J)
 02280 NEXT J
 02290 LET E(1)=INT(E(1)*100+.5)/100
   02300 LET E(2)=INT(E(2)*100+.5)/100
   02305 LET C9=INT(C9*100+.5)/100
  02310 LET G=INT(G*100+.5)/100
    02320 PRINT"TIO2",C9,E(1),E(2),G
 02330 GOTO 1560
   03000 DATA .044,2.926,7.68,6.633,2.345,0.069,1.193,5.588
  03010 DATA 11.75,16.8,17.9,14.03,7.437,2.728,.749,.175
    03020 DATA .187,14.06,38.64,38.09,19.46,5.725,1.45,.365
   03030 DATA .074,.026,.012,.003,0,0,0,0
03040 DATA 0,.085,.513,1.383,3.21,6.884,12.88,18.27
  03050 DATA 19.61,15.99,10.68,6.264,2.897,1.003,.271,.063
  03060 DATA .012,.616,1.814,1.985,0.886,0.025,.897,4.619
   03070 DATA 11.07,19.47,25.31,22.56,13.17,5.27,1.65,.491
   03080 DATA .050,2.954,9.124,11.44,7.42,3.022,1.095,.316
   03090 DATA .07,.031,.018,.005,0,0,0,0
 03100 DATA 0,.017,.119,.413,1.21,3.691,9.459,15.19
   03110 DATA 18.43,18.42,15.1,10.1,5.136,1.941,.598,.177
    03120 DATA 0,1.849,6.032,2.719,1.107,.023,.495,5.937,14.02
03130 DATA 24.84,23.5,12.85,3.974,.773,.081,0
   03140 DATA 0,8.997,30.11,15.8,9.162,2.834,.813,.331
  03150 DATA .111,.038,.017,.002,0,0,0,0
03160 DATA 0,.073,3.361,.602,1.495,3.39,6.855,18.3
   03170 DATA 23.75,23.45,14.17,5.717,1.527,.28,.029,0
  03300 DATA .425,.03,.018,.015,.012,.011,.011,.01,.01
 03310 DATA .01,.01,.01,.01,.01,.011,.012
   03400 DATA 1,.241,.315,.33,.352,.368,.391,.412,.429
  03410 DATA .441,.459,.481,.506,.525,.539,.566,.589,.15
    03420 DATA 2,.05,.088,.087,.083,.08,.069,.018,.005
   03430 DATA .004,.004,.004,.006,.007,.007,.008,.009,.43
    03440 DATA 3,.047,.08,.068,.045,.018,.005,.002,.002
  03450 DATA .001,.002,.001,.002,.003,.003,.003,.004,.43
    03460 DATA 4,.067,.095,.074,.065,.06,.049,.032,.017
  03470 DATA .011,.011,.011,.013,.014,.015,.016,.016,.15
    03480 DATA 5,.028,.065,.067,.072,.076,.082,.085,.086
 03490 DATA .079,.056,.026,.021,.019,.017,.015,.012,.16
    03500 DATA 6,.121,.131,.092,.046,.015,.011,.016,.031
 03510 DATA .069,.145,.372,.509,.558,.549,.424,.361,3.4
    03520 DATA 7,.039,.068,.070,.074,.075,.079,.082,.078
 03530 DATA .048,.013,.0,0,0,0,0,0,.58
 03540 DATA 8,.047,.047,.027,.016,.019,.039,.092,.23
  03550 DATA .488,.688,.745,.744,.615,.516,.563,.569,3.4
    04000 FOR I=1 TO N
04010 FOR J=1 TO N
04020 LET B(I,J)=A(I,J)
04030 NEXT J
 04040 NEXT I
 04050 FOR I=1 TO N
04060 LET B(I,N+1)=D(I)
04070 NEXT I
 04080 FOR I=1 TO N-1
   04090 IF B(I,I)<>0 THEN 4200
04100 LET J0=I+1
  04110 FOR J=J0 TO N
    04120 IF B(J,I)=0 THEN 4190
 04130 FOR K=1 TO N+1
   04140 LET Z(K)=B(I,K)
  04150 LET B(I,K)=B(J,K)
04160 LET B(J,K)=Z(K)
  04170 NEXT K
 04180 GOTO 4200
   04190 NEXT J
 04200 NEXT I
 04210 FOR I=1 TO N-1
   04220 LET J0=I+1
  04230 IF B(I,I)=0 THEN 4420
 04240 FOR J=J0 TO N
    04250 LET Z1=B(J,I)/B(I,I)
  04260 FOR K=J0 TO N+1
  04270 LET B(J,K)=B(J,K)-Z1*B(I,K)
04280 NEXT K
 04290 NEXT J
 04300 NEXT I
 04310 FOR I=1 TO N
04320 LET J=N+1-I
 04330 LET D(J)=B(J,N+1)/B(J,J)
   04340 LET J0=J-1
  04350 IF J0<1 THEN 4400
04360 FOR K=1 TO J0
    04370 LET B(K,N+1)=B(K,N+1)-B(K,J)*D(J)
    04380 LET B(K,J)=0
04390 NEXT K
 04400 NEXT I
 04410 RETURN
 04420 PRINT "IMPROPER MATRIX"
    04430 RETURN
 05000 LET Q1=.724*V1+.382*V2-.098*V3
  05010 LET Q2=-.48*V1+1.37*V2+.1276*V3
 05020 LET Q3=.686*V3
   05030 LET Q4=.724*V4+.382*V5-.098*V6-Q1
    05040 LET Q5=-.48*V4+1.37*V5+.1276*V6-Q2
   05050 LET Q6=.686*V6-Q3
05055 STOP
   05060 LET K1=.55669+.049434*V2-.82575E-3*V2*V2
  05070 LET K1=K1+.79172E-5*(V2^3)-.30087E-7*(V2^4)
    05080 LET K2=.17548+.027556*V2-.57262E-3*V2*V2
  05090 LET K2=K2+.63893E-5*(V2^3)-.26731E-7*(V2^4)
    05095 STOP
   05100 LET A2=17.3E-6*(Q1*Q1+Q2*Q2)
    05105 PRINT A2
    05107 STOP
   05110 X1=Q1*Q1*Q2*Q2*2.73
   05111 X2=Q1^4+Q2^4
05112 A2=A2/(1+X1/X2)
  05120 LET B2=3.098E-4*(Q3*Q3+.2015*V2*V2)
  05130 LET D1=(Q1*Q4+Q2*Q5)/((Q1*Q1+Q2*Q2)^.5)
   05140 LET D2=(Q2*Q4-Q1*Q5)/((Q1*Q1+Q2*Q2)^.5)
   05150 LET D3=(Q3*D1)/((Q1*Q1+Q2*Q2)^.5)-Q6
 05160 LET D4=.279*D1/(A2^.5)
05170 LET D5=(D2*D2/A2+D3*D3/B2)^.5
   05180 LET D6=K1*D5
05190 LET D7=K2*D4
05200 LET D8=(D6*D6+D7*D7)^.5
    05210 RETURN
 05220 END                             
